﻿' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

Imports System.IO
Imports System.Runtime.CompilerServices
Imports System.Threading
Imports Microsoft.CodeAnalysis.Emit

Namespace Microsoft.CodeAnalysis.VisualBasic
    Friend Module VisualBasicFileSystemExtensions
        ''' <summary>
        ''' Emit the IL for the compilation into the specified stream.
        ''' </summary>
        ''' <param name="compilation">Compilation.</param>
        ''' <param name="outputPath">Path of the file to which the compilation will be written.</param>
        ''' <param name="pdbPath">
        ''' Path of the file to which the compilation's debug info will be written.
        ''' Also embedded in the output file. <c>Nothing</c> to forego PDB generation.
        ''' </param>
        ''' <param name="xmlDocPath">Path of the file to which the compilation's XML documentation will be written. <c>Nothing</c> to forego XML generation.</param>
        ''' <param name="win32ResourcesPath">Path of the file from which the compilation's Win32 resources will be read (in RES format).  
        ''' Null to indicate that there are none.</param>
        ''' <param name="manifestResources">List of the compilation's managed resources. <c>Nothing</c> to indicate that there are none.</param>
        ''' <param name="cancellationToken">To cancel the emit process.</param>
        ''' <exception cref="ArgumentNullException">Compilation or path is null.</exception>
        ''' <exception cref="ArgumentException">Path is empty or invalid.</exception>
        ''' <exception cref="IOException">An error occurred while reading or writing a file.</exception>
        <Extension>
        Public Function Emit(compilation As VisualBasicCompilation,
                      outputPath As String,
                      Optional pdbPath As String = Nothing,
                      Optional xmlDocPath As String = Nothing,
                      Optional win32ResourcesPath As String = Nothing,
                      Optional manifestResources As IEnumerable(Of ResourceDescription) = Nothing,
                      Optional cancellationToken As CancellationToken = Nothing) As EmitResult

            Return FileSystemExtensions.Emit(compilation, outputPath, pdbPath, xmlDocPath, win32ResourcesPath, manifestResources, cancellationToken)
        End Function
    End Module
End Namespace
